En Elixir, el cálculo se considera como una serie de transformaciones fundamentales. Los datos son inmutables, y el operador = no es para asignación, sino para coincidencia de patrones.
1. El Operador de Coincidencia
La coincidencia te permite vincular valores a patrones. Si la estructura del lado izquierdo no coincide con el derecho, la transformación falla. Elixir utiliza operadores especializados para el flujo de datos: Aritmética (+, -, *, /), Comparación (===, !==, >=), y Unión (<> para cadenas, ++ para listas).
2. La Expresión 'with'
La with expresión organiza transformaciones de múltiples pasos donde el éxito es condicional. Permite encadenar coincidencias usando <-. A diferencia del operador de coincidencia =, si una coincidencia en <- falla, la expresión devuelve el valor que no coincide en lugar de generar un error.
3. Ámbito y Sintaxis
Bajo el capó, with se trata como un macro o llamada a función. Las variables vinculadas dentro de ella no se propagan al ámbito externo. La sintaxis como media = con contador = ..., hacer: suma/contador es la forma basada en expresiones para calcular valores derivados.
$$\text{media} = \frac{\sum_{i=1}^{n} x_i}{n}$$